package com.heima.service.impl;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.heima.common.PageResult;
import com.heima.mapper.CommodityMapper;
import com.heima.mapper.ManageCommodityMapper;
import com.heima.pojo.Sku;
import com.heima.pojo.SkuClass;
import com.heima.pojo.dto.ManageCommodityDTO;
import com.heima.pojo.dto.SkuClassSearchDto;
import com.heima.pojo.vo.ManageCommodityVo;
import com.heima.pojo.vo.SkuSearchVO;
import com.heima.service.ManageCommodityservice;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;


@Service
public class ManageCommodityserviceeImpl implements ManageCommodityservice {

    @Autowired
    ManageCommodityMapper manageCommodityMapper;
    @Autowired
    private CommodityMapper commodityMapper;
    /**
     * 新增商品
     * **/
    @Override
    public void add(ManageCommodityDTO dto) {
        ManageCommodityVo vo =new ManageCommodityVo();
        BeanUtils.copyProperties(dto,vo);
        vo.setCreateTime(LocalDateTime.now());
        vo.setUpdateTime(LocalDateTime.now());
        manageCommodityMapper.insert(vo);
    }
/**
 * 分页查询
 **/
    @Override
    public PageResult<SkuSearchVO> pagingQuery(SkuClassSearchDto dto) {
        //开启分页
        PageHelper.startPage(dto.getPageIndex(), dto.getPageSize());
        //赋值实体类对象
        Sku sku = new Sku();
        sku.setSkuName(dto.getClassName());
        //分页查库
        Page<Sku> page = manageCommodityMapper.pagingQuery(sku);

        PageResult<SkuSearchVO> result = new PageResult<>();
        result.setPageSize(page.getPageSize());//页面的大小
        result.setTotalPage(page.getPages());//页面总页数
        result.setPageIndex(page.getPageNum());//页面具体的页
        result.setTotalCount(page.getTotal());//页面总条数

        //填充分页数据
        List<SkuSearchVO> skuSearchVOS = new ArrayList<>();
        List<Sku> pageResult = page.getResult();

        for (Sku s : pageResult) {
            //返回结果实体对象
            SkuSearchVO skuSearchVO = new SkuSearchVO();
            BeanUtils.copyProperties(s, skuSearchVO);
            //对其中的不一致一段进行修改
            //打折就是true ！0
            boolean discount = !Objects.equals(s.getIsDiscount(), 0);
            skuSearchVO.setDiscount(discount);
            //商品分类id
            Integer classId = s.getClassId();
            //查询分类信息
            SkuClass skuClass = manageCommodityMapper.selectByIdAll(classId);
            skuSearchVO.setSkuClass(skuClass);
            //设置时间
            skuSearchVO.setCreateTime(s.getCtime());
            skuSearchVO.setUpdateTime(s.getUtime());

            skuSearchVOS.add(skuSearchVO);
        }

        result.setCurrentPageRecords(skuSearchVOS);

        return result;
    }

    @Override
    public Boolean upd(Integer skuId, ManageCommodityDTO dto) {
        Sku sku = new Sku();
        BeanUtils.copyProperties(sku,dto);
        sku.setSkuId(skuId);
     manageCommodityMapper.update(sku);
        return true;

    }
}
